package org.jetlinks.protocol.official.mqtt.down.radar60SP;

import lombok.AllArgsConstructor;
import lombok.Getter;
import org.jetlinks.core.message.function.FunctionInvokeMessage;
import org.jetlinks.protocol.official.TopicPayload;
import org.jetlinks.protocol.official.mqtt.down.radar60SP.handler.*;

import java.util.function.BiFunction;

/**
 * @Author bingzhong
 * @Date 2024/12/30 20:57
 * @Description
 */
@Getter
@AllArgsConstructor
public enum Radar60SPFunctionIdEnum {

    /**
     * 参数查询
     */
    Radar60_QueryParam(Radar60QueryParamHandler::encode),
    /**
     * 工作时长上报频率设置
     */
    Radar60_WorkDurationReportFrequency(Radar60WorkDurationReportFrequency::encode),
    /**
     * 工作模式设置
     */
    Radar60_WorkMode(Radar60WorkMode::encode),
    /**
     *
     */
    Radar60_SceneMode(Radar60SceneMode::encode),
    /**
     * 安装角度设置
     */
    Radar60_InstallAngle(Radar60InstallAngle::encode),
    /**
     * 安装高度设置
     */
    Radar60_InstallHeight(Radar60InstallHeight::encode),
    /**
     * 运动目标可探测最大距离设置
     */
    Radar60_MovingTargetDetectionMaxDistance(Radar60MovingTargetDetectionMaxDistance::encode),
    /**
     * 静止目标可探测最大距离设置
     */
    Radar60_StaticTargetDetectionMaxDistance(Radar60StaticTargetDetectionMaxDistance::encode),
    /**
     * 人体功能开关设置
     */
    Radar60_HumanSwitch(Radar60HumanSwitch::encode),
    /**
     * 运动体征参数上报频率设置
     */
    Radar60_MovementSignsReportFrequency(Radar60MovementSignsReportFrequency::encode),
    /**
     * 呼吸功能开关设置
     */
    Radar60_BreathSwitch(Radar60BreathSwitch::encode),
    /**
     * 呼吸数值上报频率设置
     */
    Radar60_BreathValueReportFrequency(Radar60BreathValueReportFrequency::encode),
    /**
     * 呼吸强度上报频率设置
     */
    Radar60_BreathIntensityReportFrequency(Radar60BreathIntensityReportFrequency::encode),
    /**
     * 呼吸置信度上报频率设置
     */
    Radar60_BreathConfidenceReportFrequency(Radar60BreathConfidenceReportFrequency::encode),
    /**
     * 呼吸波形上报频率设置
     */
    Radar60_BreathWaveReportFrequency(Radar60BreathWaveReportFrequency::encode),
    /**
     * 心率功能开关设置
     */
    Radar60_HeartRateSwitch(Radar60HeartRateSwitch::encode),
    /**
     * 心率数值上报频率设置
     */
    Radar60_HeartRateValueReportFrequency(Radar60HeartRateValueReportFrequency::encode),
    /**
     * 心率强度上报频率设置
     */
    Radar60_HeartRateIntensityReportFrequency(Radar60HeartRateIntensityReportFrequency::encode),
    /**
     * 心率置信度上报频率设置
     */
    Radar60_HeartRateConfidenceReportFrequency(Radar60HeartRateConfidenceReportFrequency::encode),
    /**
     * 心率波形上报频率设置
     */
    Radar60_HeartRateWaveReportFrequency(Radar60HeartRateWaveReportFrequency::encode),
    /**
     * 睡眠功能开关设置
     */
    Radar60_SleepSwitch(Radar60SleepSwitch::encode),
    /**
     * 入离床状态上报频率设置
     */
    Radar60_GetIntoBedReportFrequency(Radar60GetIntoBedReportFrequency::encode),
    /**
     * 睡眠状态上报频率设置
     */
    Radar60_SleepStatusReportFrequency(Radar60SleepStatusReportFrequency::encode),
    /**
     * 清醒时长上报频率设置
     */
    Radar60_AwakeDurationReportFrequency(Radar60AwakeDurationReportFrequency::encode),
    /**
     * 浅睡时长上报频率设置
     */
    Radar60_LightSleepDurationReportFrequency(Radar60LightSleepDurationReportFrequency::encode),
    /**
     * 深睡时长上报频率设置
     */
    Radar60_DeepSleepDurationReportFrequency(Radar60DeepSleepDurationReportFrequency::encode),
    /**
     * 上报模式选择设置
     */
    Radar60_ReportMode(Radar60ReportMode::encode),
    /**
     * 睡眠模式设置
     */
    Radar60_BreathMode(Radar60BreathMode::encode);

    private final BiFunction<FunctionInvokeMessage,String, TopicPayload> function;


}
